<?php
/**
 * 6、设计模式学习-适配器模式
 * 实例化学生类，设置数据后，只获取学生姓名
 * 2019年12月9日17:15:22
 */
namespace Application\Controller;

use Application\Common\Adaptor\Student as Student;
use Application\Common\Adaptor\StudentAdaptor1 as StudentAdaptor1;
use Application\Common\Adaptor\StudentAdaptor2 as StudentAdaptor2;

class StudentAdaptorController extends BaseController
{
    // 没有使用适配器模式
    public function noUseAdaptor()
    {
        $student = new Student();
        $student -> setName('张三');
        $student -> setAge('20岁');
        $student_name = $student -> display()['name'];
        echo "此学生的姓名为：{$student_name}";
        // 总结：由于学生类中没有只获取姓名的方法，所以在没有使用适配器的时候获取到的是全部信息，然后通过键访问学生的姓名
    }
    // 使用适配器模式
    public function useAdaptor()
    {
        $student_adaptor_1 = new StudentAdaptor1();
        $student_adaptor_1 -> setName('张三');
        $student_adaptor_1 -> setAge('20岁');
        $student_name = $student_adaptor_1 -> getName();
        echo "此学生的姓名为：{$student_name}";

        echo '<hr />';

        $student_adaptor_2 = new StudentAdaptor2();
        $student_adaptor_2 -> setName('张三');
        $student_adaptor_2 -> setAge('20岁');
        $student_name2 = $student_adaptor_2 -> getName();
        echo "此学生的姓名为：{$student_name2}";
        // 总结：使用了适配器模式以后，类中的相关方法与属性调用具有了平滑性
    }
}
